--[[
    @Author       : GGELUA
    @Date         : 2022-05-25 08:42:21
Last Modified by: GGELUA
Last Modified time: 2023-07-28 09:19:35
--]]
local 符石 = 多开数据[多开数据.当前].__UI界面.窗口层:创建我的窗口("符石",0,0,398,510)
local 当前 = 多开数据.当前
function 符石:初始化()
    __置窗口坐标(self)
    local nsf = require('SDL.图像')(398,510)
    if nsf:渲染开始() then
        置窗口背景("符石镶嵌",0,16,393,495,true):显示(0,0)
        取属性背景(0, 0, 370, 75, true):显示(10,345)
        __res:getPNGCC(2,892,179,143,209):拉伸(140,220):置颜色(54, 161, 202,255):显示(14,69)
        字体18:置颜色(__取颜色('黄色'))
        字体18:取图像('请选择一个需要镶嵌的符石位置'):显示(15,430)
        nsf:渲染结束()
    end
    self:置精灵(nsf:到精灵())
end

local 关闭 = 符石:创建我的按钮(__res:getPNGCC(1,401,0,46,46),"关闭",398-46,0)

function 关闭:左键弹起(x,y,msg)
    符石:置可见(false)
end 

function 符石:打开(data,pid)
    self:置可见(true)
    local lssj = __物品格子.创建(当前)
    lssj:置物品(data,"白格子","道具行囊")
    lssj:置偏移(10,10)
    self:重置(lssj.物品)
    self.开始镶嵌:置可见(true)
    self.返回:置可见(false)
    self.镶嵌:置可见(false)
    self:刷新(lssj.物品)
    self.选中 = nil
    self.pid = pid
end

function 符石:重置(data)
    local nsf = require('SDL.图像')(726,484)
    if nsf:渲染开始() then
        __res:取图像(__res:取地址('shape/dj/',data.大模型资源)):显示(30,119)
        nsf:渲染结束()
    end
    self.图像 = nsf:到精灵()
end

function 符石:镶嵌完成(data)
    if self.选中 then
        self.符石网格.子控件[self.选中]._spr.确定 = nil 
        self.选中 = nil
    end
    self.星位网格.子控件[1]._spr.确定 = nil
    self.开始镶嵌:置可见(true)
    self.返回:置可见(false)
    self.镶嵌:置可见(false)
    self:刷新(data)
end

function 符石:刷新(data)
  if data then
    self.数据 = data
    self.符石网格:置物品(data)
    if data.星位组 and data.星位[6] then
      self.星位网格:置可见(true)
      self.星位网格:置物品(data.星位[6])
    elseif data.星位组 then
      self.星位网格:置可见(true)
      self.星位网格:置物品()
    else
      self.星位网格:置可见(false)
      self.星位网格:置物品()
    end
  else
      data = self.数据
  end
  self.符石组合 = {}
  self.符石文本:清空()
  self.符石文本:置文本("#Y"..data.名称)
  self.符石文本:置文本("#G开运孔数："..data.开运孔数.当前..'孔/'..data.开运孔数.上限..'孔')
  local 物品表 = {}
  local 等级计算 = 0
  for i, v in ipairs(符石.符石网格.子控件) do
    if v._spr and v._spr.数据 then
      物品表[i] = {}
      物品表[i].颜色 = v._spr.数据.颜色
      等级计算 = 等级计算 + (v._spr.数据.子类 or v._spr.数据.符石等级)
      local  组合语句="#G符石："
      local 计数 = 1
      for k,v in pairs(v._spr.数据.符石属性) do
        if 计数 == 1 then
            组合语句=组合语句..k.." +"..v.." "
        else
            组合语句=组合语句..k.." +"..v
        end
        计数=计数+1
      end
      self.符石文本:置文本(组合语句)
    end
  end
  if self.数据.星位组 then  
    if self.数据.星位[6] then
      local 临时属性 = ""
      for k,v in pairs(self.数据.星位[6].符石属性) do
          临时属性 = k.." +"..v
      end
      self.符石文本:置文本("#G/星位: "..临时属性)
      if 等级计算~=0 then
          if 等级计算%2==0 then
              if self.数据.星位[6].阴阳==2 then
                  self.符石文本:置文本("#G/星相互合: "..取星位相互(self.数据.分类).." +2")
              end
          else
              if self.数据.星位[6].阴阳==1 then
                  self.符石文本:置文本("#G/星相互合: "..取星位相互(self.数据.分类).." +2")
              end
          end
      end
    else
      self.符石文本:置文本("#G/星位: 已开")
    end
  end
  local 临时组合 = 取星位组合(物品表)
  if 临时组合 ~= nil then
    self.符石文本:置文本(string.format("#X/符石组合： %s",临时组合.组合))
    self.符石文本:置文本(string.format("#X/门派条件： %s",临时组合.门派 or "无"))
    self.符石文本:置文本(string.format("#X/部位条件： %s",取符石部位(临时组合.部位)))
    self.符石文本:置文本(string.format("#X/%s",取符石组合说明(临时组合.组合,临时组合.等级)))
  end
end


for i, v in ipairs {
    {name = '符石套1', x = 14 ,y = 297 , tcp = __res:getPNGCC(3,1040,201,149,37,true):拉伸(126,36), tcp2 = __res:getPNGCC(3,1039,160,148,36,true):拉伸(126,36) , font = '1'},
    --{name = '符石套2', x = 245 ,y = 297 , tcp = __res:getPNGCC(3,880,331,86,37,true):拉伸(126,36), tcp2 = __res:getPNGCC(3,876,289,85,36,true):拉伸(126,36) , font = '2'},
} do
    local  临时函数 = 符石:创建我的单选按钮(v.tcp,v.tcp2,v.name,v.x,v.y,v.font)
    function 临时函数:左键弹起(x, y)

    end
end

for i, v in ipairs {
    {name = '装备详情', x = 114 ,y = 250 , tcp = __res:getPNGCC(2,1066,6,37,37,true)},
    {name = '开始镶嵌', x = 130 ,y = 457 , tcp = __res:getPNGCC(3,536,345,126,43,true) , font = '开始镶嵌'},
    {name = '返回', x = 11 ,y = 457 , tcp = __res:getPNGCC(3,536,345,126,43,true):拉伸(115,43) , font = '返回'},
    {name = '镶嵌', x = 137 ,y = 457 , tcp = __res:getPNGCC(3,536,345,126,43,true):拉伸(115,43) , font = '镶嵌'},
    -- {name = '还原', x = 263 ,y = 457 , tcp = __res:getPNGCC(3,536,345,126,43,true):拉伸(115,43) , font = '还原'},
} do
    local  临时函数 = 符石:创建我的按钮(v.tcp,v.name,v.x,v.y,v.font)
    function 临时函数:左键弹起(x, y)
        if v.name == '开始镶嵌' then
            if 符石.选中 or 符石.星位网格.子控件[1]._spr.确定 then
                符石.开始镶嵌:置可见(false)
                符石.返回:置可见(true)
                符石.镶嵌:置可见(true)
                if 符石.选中 then
                   多开数据[当前 or self and self.当前].__UI弹出.符石道具选择:打开(多开数据[当前].__主控.道具列表,497,165,'符石',符石.选中)
                else
                    多开数据[当前 or self and self.当前].__UI弹出.符石道具选择:打开(多开数据[当前].__主控.道具列表,497,165,'星位',1)
                end 
            else
                多开数据[当前 or self and self.当前].__UI弹出.提示框:打开("#Y请选择要镶嵌的符石位置")
            end
        elseif v.name == '返回' then
            if 符石.选中 and 符石.符石网格.子控件[符石.选中]._spr then
                符石.符石网格.子控件[符石.选中]._spr.确定 = nil 
                符石.选中 = nil
            end
            符石.星位网格.子控件[1]._spr.确定 = nil
            符石.开始镶嵌:置可见(true)
            符石.返回:置可见(false)
            符石.镶嵌:置可见(false)
            符石:刷新(多开数据[当前].__主控.道具列表[符石.pid])
        elseif v.name == '镶嵌' then
            if 符石.选中 and 符石.符石网格.子控件[符石.选中]._spr.原始编号 then
              local 发送内容 = {}
              发送内容[符石.选中] = {背包类型="道具",物品id=符石.符石网格.子控件[符石.选中]._spr.原始编号,方式="镶嵌"}
              发送数据(当前 or self and self.当前,3801,{内容=发送内容})
            elseif 符石.星位网格.子控件[1]._spr.确定 and 符石.星位网格.子控件[1]._spr.原始编号 then
              local 发送内容 = {}
              发送内容[6] = {背包类型="道具",物品id=符石.星位网格.子控件[1]._spr.原始编号,方式="镶嵌"}
              发送数据(当前 or self and self.当前,3801,{内容=发送内容})
            else
               多开数据[当前 or self and self.当前].__UI弹出.提示框:打开('#Y请选择要镶嵌的符石')
            end
        -- elseif v.name == '还原' then
        --     if 符石.选中 then
        --         符石.符石网格.子控件[符石.选中]._spr.确定 = nil 
        --         符石.选中 = nil
        --     end
        --     符石.开始镶嵌:置可见(true)
        --     符石.返回:置可见(false)
        --     符石.镶嵌:置可见(false)
        --     符石.还原:置可见(false)
        --     符石:刷新(多开数据[当前].__主控.道具列表[符石.pid])
        end
    end
end

local 符石文本 = 符石:创建文本("符石文本",170,69,206,220)
function 符石文本:初始化()
end

local 符石网格 = 符石:创建网格("符石网格",25,354,370,55)
function 符石网格:左键弹起(x, y, a, b, msg)
    if 符石.开始镶嵌.是否可见 then
      if self.子控件[符石.选中] and self.子控件[符石.选中]._spr then
        if 符石.选中 then
            self.子控件[符石.选中]._spr.确定 = nil
        end
        符石.选中 = a
        if self.子控件[a]._spr then
          self.子控件[a]._spr.确定 = true
          self.子控件[a]._spr:详情打开(170,86,w,h,"选择",a)
        end
      else
        符石.选中 = a
        if self.子控件[a]._spr then
          self.子控件[a]._spr.确定 = true
          self.子控件[a]._spr:详情打开(170,86,w,h,"选择",a)
        end
      end
      符石.星位网格.子控件[1]._spr.确定 = nil
    end
end

function 符石网格:置物品(data,bh,pid)
    if not bh then
        self:创建格子(55,55,0,15,1,data.开运孔数.当前)
        for i = 1,#self.子控件 do
            if data.星位 and data.星位[i] then
                local lssj = __材料格子.创建(当前)
                if data.星位[i].名称 == nil then data.星位[i] = nil end
                lssj:置物品(data.星位[i])
                self.子控件[i]:置精灵(lssj)
            else
              local lssj = __材料格子.创建(当前)
              lssj:置物品(nil)
              self.子控件[i]:置精灵(lssj)
            end
        end
        符石:刷新()
    else
        local lssj = __材料格子.创建(当前)
        lssj:置物品(data)
        lssj.原始编号 = pid
        self.子控件[bh]:置精灵(lssj)
        符石.数据.临时符石 = 符石.数据.临时符石 or {}
        符石.数据.临时符石[bh] = data
        符石:刷新()
    end
end

local 星位网格 = 符石:创建网格("星位网格", 164, 290, 55, 55)
function 星位网格:初始化()
  self:创建格子(55, 55, 0, 0, 1, 1)
end
function 星位网格:左键弹起(x, y, a, b, msg)
    if 符石.开始镶嵌.是否可见 then
        if 符石.选中 then
          符石.符石网格.子控件[符石.选中]._spr.确定 = nil 
          符石.选中 = nil
        end
        self.子控件[a]._spr.确定 = true
    end
end
function 星位网格:置物品(data, bh, pid)
  if not bh then
    for i = 1, #self.子控件 do
      local lssj = __材料格子.创建(当前)
      lssj:置物品(data)
      self.子控件[i]:置精灵(lssj)
    end
  else
    local lssj = __材料格子.创建(当前)
    lssj:置物品( data)
    lssj.原始编号 = pid
    self.子控件[bh]:置精灵(lssj)
    符石:刷新()
  end
end
